The MPEG-2 standard uses video packets comprising any number of macroblocks to confine bit errors. Frames are represented by a set of macroblocks. The macroblocks are grouped into a data structure known as a video packet. In MPEG-2, all macroblock rows start with a new video packet. During the decoding of a video packet, if an error is encountered, the video decoder can simply drop the remaining macroblocks that followed the bit error. In this manner, only a small amount of information is lost as a result of the bit error.
MPEG-4 Part 2 also uses video packets to confine bit errors. The video data is transmitted as a video elementary stream. The portions of the video elementary stream that are at the video packet level and lower are encoded with a variable length code. In MPEG-4 Part 2, the video packet is defined such that the video packet can be decoded in a forward order, or the reverse order. Accordingly, after encountering an error, the video decoder can go to the end of the video packet, and start decoding in the reverse order, until the same error, or another error is encountered. In this manner, a greater portion of the video packet is recovered and reconstructed, in spite of encountering error(s).
To take advantage of the foregoing feature, the video decoder needs to be able to receive and decode the video bitstream in reverse order in real-time. During the decoding, the video elementary stream is stored in a memory known as the compressed data buffer in the forward order, along with a table that indicates the starting addresses of each video packet. The video decoder receives and decodes the video elementary stream by accessing the compressed data buffer. Upon encountering an error, the video decoder can receive the video packet at the ending address of the video packet and moving in the reverse order.
Receiving the video packet in reverse order can be made possible by manipulating the memory access. For example, the video decoder can sequentially access data words in reverse order. After accessing each data word, the video decoder can use logic to reverse the bit order of the data word. However, the foregoing adds significant operations to the video decoder and makes accessing and decoding in the reverse order difficult to perform in real-time.
Further limitations and disadvantages of conventional and traditional systems will become apparent to one of skill in the art through comparison of such systems with the invention as set forth in the remainder of the present application with reference to the drawings.